package com.hxzy.common.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * JWT工具
 * @author nick
 */
public class JwtUtil {

    //自定义密码
    private static final String SECURITY_KEY="^hxzy_2020_crm_#^&*!@#%$";


    /**
     * 生成jwt串
     * @param obj 加密数据对象
     * @return
     */
    public static String createToken(Object obj){
        //载体
        Map<String,Object> valueMap=new HashMap<>();
        valueMap.put("hxzy_sessionId",obj);

        //30分钟过过期
        long exp=System.currentTimeMillis()+(1000L*60*30);

       String token= Jwts.builder()
                .setClaims(valueMap)
                .setExpiration(new Date(exp))  //多久过期
                .signWith(SignatureAlgorithm.HS256,SECURITY_KEY)
        .compact();

       return token;
    }

    /**
     * 解析数据
     * @param jwtStr
     * @return
     */
    public static Claims parseJwt(String jwtStr){
        Claims claims=Jwts.parser().setSigningKey(SECURITY_KEY).parseClaimsJws(jwtStr).getBody();
        return claims;
    }

    /**
     * 根据jwt取得当前登录sessionId
     * @param jwtStr
     * @return
     */
    public static String getCurrentSessionId(String jwtStr){
        Claims claims=parseJwt(jwtStr);
        String jsonStr=claims.get("hxzy_sessionId",String.class);
        return  jsonStr;
    }





}
